<?php
class Horario_Model extends CI_Model{
    function __construct()
    {
        parent::__construct();
    }

    function getPersonalById($idPersona){
        $this->db->start_cache();

        $sql = $this->db->query("
            select
            p.Persona Persona,
            p.Nombres Nombres,
            p.Apellido_Paterno Apellido_Paterno,
            p.Apellido_Materno Apellido_Materno
            from persona p
            where p.Persona = $idPersona");

        $this->db->flush_cache();
        $arr = $sql->result_array();
        return $arr[0];
    }

    function getActividadesEspGen($padre='', $espGens){
        $opComp = "=";
        if ($padre == ''){
            $padre = "null";
            $opComp = " is ";
        }

        $condicion = ' (';
        $i = 0;
        foreach ($espGens as $espGen){
            $i ++;
            $condicion .= ' exeg.EspecialidadGeneral= '.$espGen;
            if ($i < count($espGens)){
                $condicion .= ' or ';
            }
        }
        $condicion .= ')';
        

        $query = "
                select
                e.Especialidad Especialidad,
                e.Descripcion Descripcion
                from
                (
                    select distinct
                    EspecialidadPadreNivelesArriba(e.Especialidad, -NivelEspecialidad($padre) + NivelEspecialidad(e.Especialidad) - 1) Especialidad
                    from
                    especialidad e,
                    especialidadxespecialidadgeneral exeg
                    where
                    e.Especialidad = exeg.Especialidad and
                    NivelEspecialidad (e.Especialidad) > NivelEspecialidad ($padre) and
                    EspecialidadPadreNivelesArriba(e.Especialidad, -NivelEspecialidad($padre) + NivelEspecialidad(e.Especialidad)) $opComp $padre and
                    $condicion and
                    e.Especialidad >= 0
                ) e2, especialidad e
                where e2.Especialidad = e.Especialidad";
        //echo $query;

        $sql = $this->db->query($query);
        $arr = $sql->result_array();

        return $arr;
    }

    function getActividades($padre='', $idEmpleado){
        $this->db->start_cache();

        $query = "select EspecialidadGeneral from personalxespecialidad where Persona=$idEmpleado;";
        $result = $this->db->query($query)->result_array();

        $espGens = array();
        foreach ($result as $item){
            $espGens[] = $item['EspecialidadGeneral'];
        }
        $this->db->flush_cache();

        $arr = $this->getActividadesEspGen($padre, $espGens);
        $actividades = array();
        foreach ($arr as $item){
            $actividades[] = array(
                'id'    =>  $item['Especialidad'],
                'nombre'=>  $item['Descripcion'],
            );
        }

        return $actividades;
    }


    function getAmbientes($padre=''){
        $this->db->start_cache();

        if ($padre == ''){
            $condicion = " where PadreAmbiente = Ambiente";
        }else{
            $condicion = " where PadreAmbiente=$padre and PadreAmbiente <> Ambiente";
        }

        $query = "select * from ambiente $condicion";
        $sql = $this->db->query($query);
        $arr = $sql->result_array();

        $ambientes = array();
        foreach ($arr as $item){
            $ambientes[] = array(
                'id'    =>  $item['Ambiente'],
                'nombre'=>  $item['Descripcion']
            );
        }

        $this->db->flush_cache();

        return $ambientes;
    }

    function simpleInsertRango($idPersona, $horaIni, $horaFin, $fecha, $idActividad, $idAmbiente){
        $data = array(
                   'Persona' => intval($idPersona),
                   'Fecha' => $fecha,
                   'HoraIni' => intval($horaIni),
                   'HoraFin' => intval($horaFin),
                   'Especialidad' => intval($idActividad),
                   'Ambiente' => $idAmbiente
                );

                $this->db->insert('rangohorario', $data);
    }

    function insertRango($idPersona, $horaIni, $horaFin, $fecha, $idActividad, $idAmbiente){
        $this->db->start_cache();

        if ($idActividad == ""){
            return;
        }

        if ($horaIni == $horaFin){
            return;
        }

        if ($idAmbiente == -1 || $idAmbiente == ''){
            $idAmbiente = null;
        }

        $duracionHoras = $horaFin - $horaIni;
        $idActividadVacaciones = ID_ESP_VACACIONES;

        //revisar vacaciones
        $sql = "select
                1
                from
                rangohorario r
                where
                    r.Persona = $idPersona and
                    r.fecha = '$fecha' and
                    r.Especialidad = $idActividadVacaciones
                ;";
        $result = $this->db->query($sql)->result_array();

        if (count($result) > 0){
            //esta de vacaciones ese dia, no insertar nada
        }else{
            //revisar cruces
            $sql = "select
                    1
                    from
                    rangohorario r
                    where
                        r.Persona = $idPersona and
                        (r.horaIni <> $horaIni or r.horaFin <> $horaFin) and
                        abs(
                        (unix_timestamp( '$fecha' )+$horaIni*60*60  + ($duracionHoras*60*60)/2)
                        -
                        (unix_timestamp( r.Fecha )+r.horaIni*60*60  + (r.HoraFin-r.HoraIni)*60*60/2)
                        )
                        <
                        ($duracionHoras*60*60 + (r.HoraFin-r.HoraIni)*60*60)/2
                    ;";
            $result = $this->db->query($sql)->result_array();

            if (count($result) > 0){
                //hay cruce, no insertar
            }else{
                //insertar todos los descendientes de la especialidad elegida,
                //pero solo que sean de ultimo nivel

                $this->db->start_cache();

                $query = "select EspecialidadGeneral from personalxespecialidad where Persona=$idPersona;";
                $result = $this->db->query($query)->result_array();

                $espGens = array();
                foreach ($result as $item){
                    $espGens[] = $item['EspecialidadGeneral'];
                }
                $this->db->flush_cache();

                $condicion = '';
                $condicion .= ' (';
                foreach ($espGens as $espGen){
                    $condicion .= ' e.EspecialidadGeneral= '.$espGen.' or ';
                }
                $condicion .= ' e.EspecialidadGeneral is null) ';
                
                $this->db->start_cache();

                $sql = "select
                        e.Especialidad idEsp
                        from
                        especialidad e
                        where
                        EsEspecialidadAncestraDe($idActividad, e.Especialidad) and
                        (select 
                        count(1)
                        from especialidad e2 
                        where
                        e2.EspecialidadPadre = e.Especialidad) = 0 and
                        $condicion;
                        ";
                $result = $this->db->query($sql)->result_array();
                foreach ($result as $item){
                    $this->simpleInsertRango($idPersona, $horaIni, $horaFin, $fecha, $item['idEsp'], $idAmbiente);
                }
            }
        }

        $this->db->flush_cache();
    }

    function deleteRango($idPersona, $desde, $hasta, $fecha, $idEspecialidad){
        $this->db->start_cache();

        if ($idEspecialidad == ""){
            $cond = "";
        }else{
            $cond = " and Especialidad=$idEspecialidad";
        }
        $sql = "delete from rangohorario where Persona=$idPersona and HoraIni=$desde and HoraFin=$hasta and Fecha='$fecha' $cond";
        $this->db->query($sql);

        $this->db->flush_cache();
    }

    function repetir($idPersona, $lunes, $semanas){
        $this->db->start_cache();

        for ($i=0; $i<7; $i++){
            //para cada dia de la semana 
            //borramos lo que haya en el dia equivalente en la siguiente semana $j
            for ($j=0; $j<$semanas; $j++){
                //hallar el dia equivalente en la siguiente semana $j
                $iMas7 = $i+7*($j+1);
                $strDiaProxSem = "date_add('$lunes', interval $iMas7 day)";
                $this->db->query("
                    delete from rangohorario
                    where
                    Persona = $idPersona and
                    Fecha = $strDiaProxSem
                    ");
            }

            //duplicamos las actividades
            $strDia = "date_add('$lunes', interval $i day)";
            $query = "
            select
            r.Fecha Fecha,
            r.Especialidad Actividad,
            r.HoraIni HoraIni,
            r.HoraFin HoraFin
            from
            rangohorario r
            where
            r.Persona = $idPersona and
            r.Fecha = $strDia;
            ";
            $sql = $this->db->query($query);
            $arr = $sql->result_array();

            //tenemos los rangos del dia $i
            foreach ($arr as $rangoDia){
                //para cada rango que conseguimos en el dia $i
                //hay que re-insertarlo en las semanas que vienen
                for ($j=0; $j<$semanas; $j++){
                    //hallar el dia equivalente en la siguiente semana $j
                    $iMas7 = $i+7*($j+1);
                    $strDiaProxSem = "date_add('$lunes', interval $iMas7 day)";

                    //ahora insertar lo mismo en ese dia
                    $horaIni = $rangoDia['HoraIni'];
                    $horaFin = $rangoDia['HoraFin'];
                    $actividad = $rangoDia['Actividad'];

                    $this->db->query("
                        insert into rangohorario
                        (Persona, HoraIni, HoraFin, Fecha, Especialidad)
                        values
                        ($idPersona, $horaIni, $horaFin, $strDiaProxSem, $actividad);
                        ");
                }
            }
        }        

        $this->db->flush_cache();
    }

    function getDisponibilidad($idEspecialidad, $lunes, $duracionMins, $permitirCruces){

        $this->db->start_cache();

        $nombreDias = array('Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa', 'Do');

        $horario = array();
        $horario['dias'] = array();

        for ($i=0; $i<7; $i++){
            //para cada dia
            $diaHorario = array();
            
            $diaLegible = strtotime($lunes." + $i days");
            $diaHorario['nombre'] = $nombreDias[(date('N', $diaLegible)-1)];
            //$diaHorario['fechaHtml'] = date('d/m/Y', strtotime($lunes." + $i days"));
            $diaHorario['fechaHtml'] = date('d', $diaLegible);
            $diaHorario['fechaSql'] = date('Y-m-d', strtotime($lunes." + $i days"));            
            $horario['dias'][] = $diaHorario;
        }


        $mins5 = array();
        for ($k=0; $k<7*24*60/5 + $duracionMins; $k++){
            $mins5[$k] = array();
            $mins5[$k]['empleados'] = array();
        }

        if (!$permitirCruces){
            $query = "
                    select
                    r.Persona idPersona
                    from
                    rangohorario r
                    where
                        r.Especialidad = $idEspecialidad and
                        
                        abs(
                        (unix_timestamp( '$lunes' ) + (7*24*60*60 + $duracionMins"."*60)/2)
                        -
                        (unix_timestamp( r.Fecha ) + (r.HoraFin-r.HoraIni)*60*60/2)
                        )
                        <=
                        (7*24*60*60 + $duracionMins"."*60 + (r.HoraFin-r.HoraIni)*60*60)/2

                    group by r.Persona;
                    ";
            //echo $query."<br/>";
            $resultadoEmpleados = $this->db->query($query)->result_array();
            //citas es un arreglo de arreglo de citas por cada 5 mins
            $citas = array();
            //echo "DURACION 5 MINS: ".(7*24*60 + $duracionMins)/5;
            for ($j=0; $j<(7*24*60 + $duracionMins)/5; $j++){
                $citas[] = array();
            }

            

            foreach($resultadoEmpleados as $item){
                //para cada empleado, ver que citas tiene registradas que se crucen con
                //la actividad a registrar
                $idEmpleado = $item['idPersona'];
                //echo $idEmpleado."<br />";
                //cruce entre la semana + duracion y cada cita del empleado
                $query = "
                        select
                        date_format(c.Fecha, '%H') hora,
                        date_format(c.Fecha, '%i') min,
                        c.Fecha fecha,
                        c.DuracionMins duracionMins
                        from
                        cita c,
                        citaxpersonal cxp
                        where
                            c.estado <> 2 and
                            cxp.Cita = c.Cita and
                            cxp.Persona = $idEmpleado and
                            
                            abs(
                            (unix_timestamp( '$lunes' ) + (7*24*60*60 + $duracionMins"."*60)/2)
                            -
                            (unix_timestamp( c.Fecha ) + (c.DuracionMins)*60/2)
                            )
                            <=
                            (7*24*60*60 + $duracionMins"."*60 + (c.DuracionMins)*60)/2
                        ;
                        ";
                $resultado2 = $this->db->query($query)->result_array();
                //echo $query."<br />";

                foreach($resultado2 as $cita){
                    $timestampCita = strtotime($cita['fecha']);
                    //echo "timestamp cita ".$cita['fecha']." ".$timestampCita."<br/>";
                    $timestampLunes = strtotime($lunes);
                    //echo "timestamp lunes ".$lunes." ".$timestampLunes."<br/>";
                    //cuantos grupos de 5 minutos existen desde el lunes hasta la fecha de la cita
                    //podria ser negativo porque hay citas q comienzan antes del lunes y que se retornaron
                    //porque son tan largas que llegan a cruzar el lunes
                    $min5_ini =  ($timestampCita - $timestampLunes)/60/5; 
                    $nMins5 = (intval($cita['duracionMins']))/5;
                    //agregar cita a los minutos 5 correspondientes
                    //en caso de q hayan tiempos negativos (cuando la cita comenzo antes del lunes)
                    //simplemente se ignorara y no se insertara al arreglo de citas
                    for ($j=0; $j<$nMins5; $j++){
                        $citas[$min5_ini+$j][] = array(
                                    'empleado'    => array(
                                            'id' => $idEmpleado
                                        )
                                );
                    }
                }
                
            }

            //obtenermos las citas q se cruzan en el area q nos interesa
            //para la especialidad seleccionada
            $query = "
                    select
                    r.Persona idEmpleado,
                    r.Fecha fecha,
                    r.HoraIni horaIni,
                    r.HoraFin horaFin,
                    r.HoraFin - r.HoraIni duracion,
                    p.Nombres nombresEmpleado,
                    p.Apellido_Paterno apellidoPaternoEmpleado
                    from
                    rangohorario r,
                    persona p
                    where
                        p.Persona = r.Persona and
                        r.Especialidad = $idEspecialidad and
                        
                        abs(
                        (unix_timestamp( '$lunes' ) + (7*24*60*60 + $duracionMins"."*60)/2)
                        -
                        (unix_timestamp( r.Fecha ) + (r.HoraFin-r.HoraIni)*60*60/2)
                        )
                        <=
                        (7*24*60*60 + $duracionMins"."*60 + (r.HoraFin-r.HoraIni)*60*60)/2
                    ";
            //echo $query."<br/>";
            $resultadoEmpleados = $this->db->query($query)->result_array();

            foreach ($resultadoEmpleados as $item){
                //para cada rango encontrado de la especialidad solicitada
                //vamos a partirlo en grupos de 5 mins
                $empleado = array(
                                'id' => $item['idEmpleado'],
                                'nombres'   => $item['nombresEmpleado'],
                                'apellidoPaterno'   => $item['apellidoPaternoEmpleado']
                            );
                $timestampDiaRango = strtotime($item['fecha']);
                $timestampLunes = strtotime($lunes);
                $min5_ini = ($timestampDiaRango + $item['horaIni']*60*60 - $timestampLunes)/60/5; 
                //$min5_fin = intval($item['horaFin'])*60/5;
                $duracion = $item['duracion']*60/5;

                $min5_fin = $min5_ini + $duracion;
                //echo "duracion: ".$duracion;
                for ($k=0; $k<$duracion; $k++){
                    //supuestamente cada 5 minutos el pata deberia estar libre
                    //porque esta en su horario
                    //pero depende de si hay una cita q ya exista y se cruce
                    //debemos buscar si hay una cita con ese empleado en el minuto5 numero $k
                    $va = true;

                    if ($min5_ini+$k+$duracionMins/5 > $min5_fin ||
                        $min5_ini+$k+$duracionMins == 0){
                        $va = false;
                    }else{
                        for ($ii=0; $ii<$duracionMins/5; $ii++){
                            //para cada 5 mins de duracion de la especialidad a consultar
                            //este doctor debe estar disponible para poder atender
                            if ($min5_ini+$k+$ii > 7*24*60/5) continue;

                            foreach ($citas[$min5_ini+$k+$ii] as $citaMin5){
                                if ($citaMin5['empleado']['id'] == $empleado['id']){
                                    $va = false;
                                    break;
                                }
                            }
                            if (!$va){
                                break;
                            }
                        }
                    }

                    if ($va){
                        $mins5[$min5_ini+$k]['empleados'][] = $empleado;
                    }                    
                }
            }
        }else{
            $query = "
                    select
                    r.Persona idPersona,
                    r.HoraIni horaIni,
                    r.HoraFin horaFin,
                    r.Fecha fecha,
                    p.Nombres nombresEmpleado,
                    p.Apellido_Paterno apellidoPaternoEmpleado
                    from
                    rangohorario r,
                    persona p
                    where
                        r.Persona = p.Persona and
                        r.Especialidad = $idEspecialidad and
                        
                        abs(
                        (unix_timestamp( '$lunes' ) + (7*24*60*60 + $duracionMins"."*60)/2)
                        -
                        (unix_timestamp( r.Fecha ) + (r.HoraFin-r.HoraIni)*60*60/2)
                        )
                        <=
                        (7*24*60*60 + $duracionMins"."*60 + (r.HoraFin-r.HoraIni)*60*60)/2
                    ";
            //echo $query."<br/>";
            $resultadoEmpleados = $this->db->query($query)->result_array();
            
            foreach($resultadoEmpleados as $item){
                $empleado = array(
                                'id' => $item['idPersona'],
                                'nombres'   => $item['nombresEmpleado'],
                                'apellidoPaterno'   => $item['apellidoPaternoEmpleado']
                            );

                $timestampLunes = strtotime($lunes);
                $min5_ini = (strtotime($item['fecha']) + $item['horaIni']*60*60 - $timestampLunes)/60/5; 
                $duracion = ($item['horaFin'] - $item['horaIni'])*60/5;
                
                for ($jj=0; $jj<$duracion; $jj++){
                    $mins5[$min5_ini+$jj]['empleados'][] = $empleado;
                }
            }
               
        }

        $horario['mins5'] = $mins5;
        $horario['lunes'] = date('U', strtotime($lunes));
    
        $this->db->flush_cache();

        return $horario;
    }

    function getHorario($idPersona, $lunes){
        
        $this->db->start_cache();

        $nombreDias = array('Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sá', 'Do');

        $horario = array();
        $horario['dias'] = array();

        for ($i=0; $i<7; $i++){

            $diaHorario = array();

            $strDia = "date_add('$lunes', interval $i day)";
            //obtener todos los rangos del dia $i
            $query = "
            select
            a.*, amb.descripcion nombreAmbiente
            from
            (
            select
            r.Fecha fecha,
            r.HoraIni hora0,
            r.HoraFin hora1,
            r.Ambiente idAmbiente,
            e.Especialidad idEspecialidad,
            e.Descripcion nombreEspecialidad
            from
            rangohorario r,
            especialidad e
            where
            e.Especialidad = r.Especialidad and
            r.Persona = $idPersona and
            r.Fecha = $strDia
            ) a left join ambiente amb on (a.idAmbiente = amb.Ambiente)
            order by a.hora0;
            ";
            $sql = $this->db->query($query);
            $arr = $sql->result_array();

            $rangos = array();
            $rango = null;
            $turnoActual = -1;
            foreach($arr as $item){
                //para cada turno-actividad encontrada
                //procesarlo para identificar todas las actividades
                //dentro de un turno
                if ($turnoActual != $item['hora0']."-".$item['hora1']){
                    //hemos terminado de ver las especialidades
                    //del turno, pasamos a un rango (turno) nuevo
                    if ($item['nombreAmbiente'] == null){
                        $item['nombreAmbiente'] = "-";
                    }
                    $rango = array(
                        'iDia'      =>  $i,
                        'hora0'     =>  $item['hora0'],
                        'hora1'     =>  $item['hora1'],
                        'ambiente'  =>  array(
                                            'id'    =>  $item['idAmbiente'],
                                            'nombre'=>  $item['nombreAmbiente']
                                            ),
                        'actividades' => array()
                    );
                    $rangos[] = $rango;
                    $turnoActual = $item['hora0']."-".$item['hora1'];
                }
                //la actividad siempre se agrega al turno actual
                $rangos[count($rangos)-1]['actividades'][] =
                                    array(
                                        'id'   =>  $item['idEspecialidad'],
                                        'nombre'   =>  $item['nombreEspecialidad']
                                    );
            }



            $citasDia = array();
            for ($ii=0; $ii<24; $ii++){
                $citasDia [] = array();
            }

            $query = "
                    select
                    c.Cita idCita,
                    c.Procedimiento idProcedimiento,
                    c.Fecha fecha,
                    time(c.Fecha) hora,
                    hour(c.Fecha) soloHora,
                    c.Estado estado,
                    c.duracionMins duracionMins,
                    EspecialidadPadre(c.Especialidad) especialidadPadre,
                    p.Persona idPersona,
                    p.Nombres nombrePersona,
                    p.Apellido_Paterno apellidoPaternoPersona
                    from
                    cita c,
                    citaxpersonal cxp,
                    persona p
                    where
                        c.estado <> 2 and
                        c.PersonaP = p.Persona and
                        c.Cita = cxp.Cita and
                        cxp.Persona = $idPersona and
                        date(c.Fecha) = $strDia
                    order by c.fecha
                    ;
                    ";
            $sql = $this->db->query($query);
            $arr = $sql->result_array();

            
            foreach ($arr as $item){
                $citasDia [$item['soloHora']][]= array(
                                'id'    =>  $item['idCita'],
                                'hora'  =>  $item['hora'],
                                'estado' => $item['estado'],
                                'idProcedimiento' => $item['idProcedimiento'],
                                'especialidad' => $item['especialidadPadre'],
                                'paciente'  =>  array(
                                                    'id'        =>  $item['idPersona'],
                                                    'nombre'    =>  $item['nombrePersona']." ".$item['apellidoPaternoPersona']
                                                )
                            );
                
            }




            $diaLegible = strtotime($lunes." + $i days");
            $diaHorario['nombre'] = $nombreDias[(date('N', $diaLegible)-1)];
            //$diaHorario['fechaHtml'] = date('d/m/Y', strtotime($lunes." + $i days"));
            $diaHorario['fechaHtml'] = date('d', $diaLegible);
            $diaHorario['fechaSql'] = date('Y-m-d', strtotime($lunes." + $i days"));
            $diaHorario['rangos'] = $rangos;
            $diaHorario['citas'] = $citasDia;
            
            $horario['dias'][] = $diaHorario;






            /*
            $mins5 = array();
            for ($i=0; $i<7*24*60/5; $i++){
                $mins5[] = array();
            }           
            */


        }
        /*
        //sacamos las citas q se cruzan en el rango semanal deseado
        $query = "
                select
                c.Cita idCita,
                c.Procedimiento idProcedimiento,
                c.Fecha fecha,
                c.Estado estado,
                c.duracionMins duracionMins,
                EspecialidadPadre(c.Especialidad) especialidadPadre,
                p.Persona idPersona,
                p.Nombres nombrePersona,
                p.Apellido_Paterno apellidoPaternoPersona
                from
                cita c,
                citaxpersonal cxp,
                persona p
                where
                    c.estado <> 2 and
                    c.PersonaP = p.Persona and
                    c.Cita = cxp.Cita and
                    cxp.Persona = $idPersona and
                    
                    abs(
                    (unix_timestamp( '$lunes' ) + (7*24*60*60)/2)
                    -
                    (unix_timestamp( c.Fecha ) + (10)*60/2)
                    )
                    <=
                    (7*24*60*60 + (10)*60)/2
                ;
                ";

        $mins5 = array();
        for ($i=0; $i<7*24*60/5; $i++){
            $mins5[] = array();
        }

        $resultado = $this->db->query($query)->result_array();
        foreach ($resultado as $item){

            $timestampDiaRango = strtotime($item['fecha']);
            $timestampLunes = strtotime($lunes);
            $min5_ini = ($timestampDiaRango - $timestampLunes)/60/5; 

            $duracion = $item['duracionMins']/5;

            $min5_fin = $min5_ini + $duracion;

            for ($k=0; $k<$duracion; $k++){
                //como saca todo lo q se cruce, podrian venir de otro dia de otra semana
                //o llegar a otro dia de otra semana
                //esos no importan
                if ((($min5_ini + $k) >= 7*24*60/5) ||
                    (($min5_ini + $k) < 0)) continue;

                $mins5[$min5_ini + $k] = array(
                                'id'    =>  $item['idCita'],
                                'min5'   =>  $min5_ini+$k,
                                'estado' => $item['estado'],
                                'idProcedimiento' => $item['idProcedimiento'],
                                'especialidad' => $item['especialidadPadre'],
                                'paciente'  =>  array(
                                                    'id'        =>  $item['idPersona'],
                                                    'nombre'    =>  $item['nombrePersona']." ".$item['apellidoPaternoPersona']
                                                )
                            );
            }
        }
        */
        //$horario['citasMin5'] = $mins5;
        $horario['lunes'] = date('U', strtotime($lunes));
            

        $this->db->flush_cache();

        return $horario;
    }




    function getActividadesCosteo($padre='', $idEmpleado){
        $this->db->start_cache();

        //$query = "select EspecialidadGeneral from personalxespecialidad where Persona=$idEmpleado;";
        $query = "select EspecialidadGeneral from personalxespecialidad ";
        $result = $this->db->query($query)->result_array();

        $espGens = array();
        foreach ($result as $item){
            $espGens[] = $item['EspecialidadGeneral'];
        }
        $this->db->flush_cache();

        $arr = $this->getActividadesEspGen($padre, $espGens);
        $actividades = array();
        foreach ($arr as $item){
            $actividades[] = array(
                'id'    =>  $item['Especialidad'],
                'nombre'=>  $item['Descripcion'],
            );
        }

        return $actividades;
    }

}
?>
